/*
 ============================================================================
 Name		: fReaderAppView.h
 Author	  : wangchao
 Copyright   : Your copyright notice
 Description : Declares view class for application.
 ============================================================================
 */

#ifndef __FREADERAPPVIEW_h__
#define __FREADERAPPVIEW_h__

// INCLUDES
#include <coecntrl.h>
#include "fFramework.h"
#include "fWidgetContainer.h"
class fReaderWidget;
// CLASS DECLARATION
class CfReaderAppView : public CCoeControl, public fWidgetContainer
{
public:
    // New methods

    /**
     * NewL.
     * Two-phased constructor.
     * Create a CfReaderAppView object, which will draw itself to aRect.
     * @param aRect The rectangle this view will be drawn to.
     * @return a pointer to the created instance of CfReaderAppView.
     */
    static CfReaderAppView* NewL( const TRect& aRect );

    /**
     * NewLC.
     * Two-phased constructor.
     * Create a CfReaderAppView object, which will draw itself
     * to aRect.
     * @param aRect Rectangle this view will be drawn to.
     * @return A pointer to the created instance of CfReaderAppView.
     */
    static CfReaderAppView* NewLC( const TRect& aRect );

    /**
     * ~CfReaderAppView
     * Virtual Destructor.
     */
    virtual ~CfReaderAppView( );

public:
    // Functions from base classes

    /**
     * From CCoeControl, Draw
     * Draw this CfReaderAppView to the screen.
     * @param aRect the rectangle of this view that needs updating
     */
    void Draw( const TRect& aRect ) const;

    /**
     * From CoeControl, SizeChanged.
     * Called by framework when the view size is changed.
     */
    virtual void SizeChanged( );

    /**
     * From CoeControl, HandlePointerEventL.
     * Called by framework when a pointer touch event occurs.
     * Note: although this method is compatible with earlier SDKs, 
     * it will not be called in SDKs without Touch support.
     * @param aPointerEvent the information about this event
     */
    virtual void HandlePointerEventL( const TPointerEvent& aPointerEvent );

private:
    // Constructors

    /**
     * ConstructL
     * 2nd phase constructor.
     * Perform the second phase construction of a
     * CfReaderAppView object.
     * @param aRect The rectangle this view will be drawn to.
     */
    void ConstructL( const TRect& aRect );

    /**
     * CfReaderAppView.
     * C++ default constructor.
     */
    CfReaderAppView( );
public:
    fReaderWidget* Widget( );
    void WidgetContentChanged( );
private:
    void HandleGainingForeground( );
    void HandleLosingForeground( );
private:
    fReaderWidget* _widget;
};

#endif // __FREADERAPPVIEW_h__
// End of File
